package com.hy.study.partition;

import com.hy.study.bean.FlowBean;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Partitioner;


/**
 * 根据业务逻辑自定义分区，每个手机号分省份输出到文件中
 * 因为分区是在map 的输出之后 reducer的输入之前 所以 partition的类型数据是map的输出
 */
public class ProvincePartitioner extends Partitioner<Text, FlowBean> {
    /**
     * 分区号只能从0开始
     * @param text
     * @param flowBean
     * @param i
     * @return
     */
    @Override
    public int getPartition(Text text, FlowBean flowBean, int i) {
        //key 是手机号
        //value 是流量信息
        String phone = text.toString();
        String proPhone=phone.substring(0,3);
        int partition=4;
        switch (proPhone){
            case "136":
                partition=0;
                break;
            case "137":
                partition=1;
                break;
            case "138":
                partition=2;
                break;
            case "139":
                partition=3;
                break;
            default:
                partition=4;
                break;
        }
        return partition;
    }
}
